import axios from 'axios';
import store from '@/store';
import router from '@/router';
export const baseURL = 'http://pcapi-xiaotuxian-front-devtest.itheima.net/';
const instance = axios.create({
	baseURL,
	timeout: 5000
});
// 请求拦截器
instance.interceptors.request.use(
	(config) => {
		const { profile } = store.state.user; // 获取用户信息对象
		if (profile.token) {
			// 存在token 设置token
			config.headers.Authorization = `Bearer ${profile.token}`;
		}
		return config;
	},
	(err) => {
		return Promise.reject(err);
	}
);
// 响应拦截器
instance.interceptors.response.use(
	(res) => res.data,
	(err) => {
		// 401状态码，进入该函数
		if (err.response && err.response.status === 401) {
			// 1.清空本地无效信息
			store.commit('user/setUser', {});
			// 2.跳转登录页面并传参当前路由
			// 在组件里：$route.fullPath 当前路由地址
			// 在js里：router.currentRoute.fullPath
			const fullPath = encodeURIComponent(router.currentRoute.value.fullPath);
			router.push('/login?redirectUrl=' + fullPath);
		}
		return Promise.reject(err);
	}
);
// 导出
export default (url, method, submitData) => {
	return instance({
		url,
		method,
		// [] 设置一个动态key 可以写js表达式
		[method.toLowerCase() === 'get' ? 'params' : 'data']: submitData
	});
};
